#include <bits/stdc++.h>
#ifndef DEBUG
#define debug
#endif
using namespace std;
using i64 = int64_t;

int dp[248][248][50];
int main() {
  cin.tie(0)->sync_with_stdio(0);
  int n;
  cin >> n;
  vector<int> v(n);
  for (auto &x : v) cin >> x;
  int ans = 0;
  for (int l = n - 1; l >= 0; l --) {
    for (int r = l; r < n; r ++) {
      if (l == r) {
        dp[l][r][v[l]] = 1;
        ans = max(ans, v[l]);
      } else {
        for (int d = 2; d < 50; d ++) {
          if (dp[l][r][d]) continue;
          for (int k = l; k < r; k ++) {
            if (dp[l][k][d - 1] && dp[k + 1][r][d - 1]) {
              dp[l][r][d] = 1;
              ans = max(ans, d);
            }
          }
        }
      }
    }
  }
  cout << ans << endl;
}